package com.yantong.service;


import com.yantong.result.ResultVo;
import com.yantong.utils.PageUtils;
import com.yantong.pojo.LoginLog;
import com.yantong.utils.SysUser;
import com.yantong.pojo.SysUserCentre;
import com.yantong.pojo.UserRole;
import com.yantong.pojo.vo.OrderProductVo;

import java.util.List;
import java.util.Map;

/**
 * @author kanghaixin
 */
public interface UserService {


	/**
	 * 获取用户关联的所有项目列表
	 * @param userId
	 * @return
     */
	SysUserCentre getUserCentre(Long userId);


	/**
	 * 获取用户详情
	 * @param userId
     * @return
     */
	SysUser getUserById(Long userId);

	/**
	 * 条件获取user列表
	 * @param map
	 * @return
	 */
	List<SysUser> getUserList(Map<String, Object> map);


	/**
	 * 保存用户
	 * @param user
	 * @return
     */
	int saveUser(SysUser user, String roleIds);

	/**
	 * 更新账号信息
	 * @param user
     * @return
     */
	int updateUser(SysUser user);



	/**
	 * 账号列表 带分页
	 * @param params
	 * @param offset
	 * @param limit
     * @return
     */
	PageUtils<SysUser> listUsers(Map<String, Object> params, Integer offset, Integer limit);

	/**
	 * 检查是否用户名已存在
	 * @param username
	 * @return
     */
	boolean checkExit(String username);

	/**
	 * 删除账号
	 * @param userId
	 * @return
     */
	int removeUser(Long userId, String flag);

	/**
	 * 重置密码
	 * @param user
	 * @return
     */
	int resetPsw(SysUser user);

	/**
	 * 更新用户登录IP
	 * @param userId
	 * @param ip
     * @return
     */
	int updateLoginIp(Long userId, String ip);

	/**
	 * 获取上次登录记录
	 * @param userId
	 * @return
     */
	LoginLog getPreLoginLog(Long userId);

	/**
	 * 商户今日预计收益
	 * @param centreId
	 * @return
	 */
	 public PageUtils<OrderProductVo> getTodayCentreTotal(Long centreId, String starDt, String endDt, String baseId, String oppayStatus, String isafter, String opstatus, Integer offset, Integer limit);

	 /**
	  * 商户今日收益
	  * @param centreId
	  * @param starDt
	  * @param endDt
	  * @return
	  */
	 public OrderProductVo getTodayCash(Long centreId, String starDt, String endDt, String baseId, String oppayStatus, String isafter, String opstatus);

	 /**
	  * 商户明细数据集合
	  * @param centreId
	  * @param starDt
	  * @param endDt
	  * @param baseId
	  * @return
	  */
	 List<OrderProductVo> getTodayOrdList(Long centreId, String starDt, String endDt, String baseId, String oppayStatus, String isafter, String opstatus);
	 
	 /**
	  * 得到默认时间
	  * @return
	  */
	 ResultVo getDefaultTime(Long centreId);
	 
	 /**
	  * 得到平台账户金额信息
	  * @return
	  */
	 Map<String,Object> getAccountInfo();

	SysUser getUserByName(String name);

}
